// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_APP_LIST_APP_LIST_MODEL_OBSERVER_H_
#define UI_APP_LIST_APP_LIST_MODEL_OBSERVER_H_

#include "ui/app_list/app_list_export.h"
#include "ui/app_list/app_list_model.h"

namespace app_list {

class AppListItem;

class APP_LIST_EXPORT AppListModelObserver {
public:
    // Triggered after AppListModel's status has changed.
    virtual void OnAppListModelStatusChanged() { }

    // Triggered after AppListModel's state has changed.
    virtual void OnAppListModelStateChanged(AppListModel::State old_state,
        AppListModel::State new_state) { }

    // Triggered after |item| has been added to the model.
    virtual void OnAppListItemAdded(AppListItem* item) { }

    // Triggered just before an item is deleted from the model.
    virtual void OnAppListItemWillBeDeleted(AppListItem* item) { }

    // Triggered just after an item is deleted from the model.
    virtual void OnAppListItemDeleted() { }

    // Triggered after |item| has moved, changed folders, or changed properties.
    virtual void OnAppListItemUpdated(AppListItem* item) { }

    // Triggered when the custom launcher page enabled state is changed.
    virtual void OnCustomLauncherPageEnabledStateChanged(bool enabled) { }

    // Triggered when the search engine is changed to and from Google.
    virtual void OnSearchEngineIsGoogleChanged(bool is_google) { }

protected:
    virtual ~AppListModelObserver() { }
};

} // namespace app_list

#endif // UI_APP_LIST_APP_LIST_MODEL_OBSERVER_H_
